home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / mac / DirectX SDK / DXSDK / samples / Multimedia / DirectShow / readme.txt < prev   
Text File  |  2001-10-10  |  13KB  |  306 lines

  1. DirectShow SDK Samples README
  2. ------------------------------
  3.  
  4. ======================================================================
  5. NOTE: See the bottom of this file for a list of new and updated
  6. DirectShow features in the DirectX 8.1 SDK.
  7. ======================================================================
  8.  
  9. The DirectShow SDK samples are subdivided into directories according
  10. to their major function:
  11.  
  12.     BaseClasses
  13.     BDA
  14.     Capture
  15.     Common (shared source files)
  16.     DMO
  17.     DVD
  18.     Editing
  19.     Filters
  20.     Misc
  21.     Players
  22.  
  23. There are also several Visual Basic samples in the VBSamples\DirectShow
  24. directory.  Even if you are exclusively a Visual C++ developer, we recommend
  25. that you review the Visual Basic sample executables, which are accessible from
  26. the SDK's "Visual Basic Samples" Start Menu folder.  Applications like
  27. SlideShow and Trimmer demonstrate many DirectShow Editing Servies (DES)
  28. capabilities that are not yet demonstrated in C++ samples.  The DexterVB tool
  29. (Timeline Explorer) is also useful for exploring and visualizing XML timelines
  30. used with DES.
  31.  
  32.  
  33. Setting up the build environment
  34. --------------------------------
  35. In your Visual C++ build environment, be sure to set your Include and Lib 
  36. directories to point to the DirectX 8 SDK's include and lib path.
  37. The DirectX 8 SDK directories must be the first directories in the search path.
  38. Otherwise, you may encounter linker errors, as you would continue using
  39. the headers and libraries supplied with Visual C++ or with an earlier version
  40. of the Platform SDK.
  41.  
  42. For more information, see "Setting Up The Build Environment" in the 
  43. "Getting Started" section of the DirectX 8 documentation.
  44.  
  45.  
  46. Building the Samples
  47. --------------------
  48.  
  49. NOTE: The BaseClasses header file schedule.h has been renamed to dsschedule.h
  50. to prevent conflicts with the Platform SDK <schedule.h>.  Only the refclock.h
  51. header in the BaseClasses directory uses this header, so the impact should
  52. be minimal.
  53.  
  54. There are two ways to build the SDK samples:
  55.     1) Using the DShow.DSW Visual C++ workspace
  56.     2) Building individual projects within their VC++ workspaces
  57.  
  58.  
  59. Using the Workspace:
  60.  
  61. The easiest way to build the samples is to open the DShow.DSW workspace,
  62. which is installed to the DirectShow samples root directory.  This workspace
  63. includes references to each of the project files for the individual samples.
  64. You can select a project (in the FileView pane) and right-click to display a
  65. build menu for the project.  Select 'Build' to build a project and its 
  66. dependencies.  Note that if you select 'Build (selection only), you will not
  67. automatically build any dependencies (like the base classes, if required).  
  68.  
  69. You can also build or rebuild all of the projects together by selecting
  70. 'Build->Batch Build' from the Visual C++ main menu.  Projects included in
  71. this workspace know their dependencies and will build them if needed.
  72.  
  73. Some of the projects listed in the FileView pane do not build applications,
  74. but instead build support libraries used by other projects within the main
  75. workspace.  For example, the GargleDMO sample depends on the 'ControlBase'
  76. and 'MedParamBase' projects that are contained within the workspace.  
  77. If you build GargleDMO, Visual C++ will automatically build the 
  78. ControlBase and MedParamBase libraries if they need to be built, and those
  79. libraries will be linked into the GargleDMO DLL.
  80.  
  81.  
  82. Building Individual Projects:
  83.  
  84. You can open any of the provided project or workspace files in Visual C++
  85. if you want to build, modify, or debug an individual sample.  If you build
  86. outside of the DShow.DSW workspace, however, you might need to first build the
  87. DirectShow Base Classes, which are installed to the "BaseClasses" directory.
  88.  
  89. The DirectMedia 6 SDK installed binaries for the BaseClasses
  90. (as strmbase.lib and the debug build, strmbasd.lib), which were compiled versions
  91. of the base classes previously installed into the SDK's classes\base directory.  
  92. DirectX 8 ships the source code for these base classes as a sample project,
  93. which allows you to modify the classes and build them with Visual C++.
  94. Since many of the samples (especially the sample filters) need to link with 
  95. STRMBASE.LIB (or STRMBASD.LIB), you must first build the base classes 
  96. to allow you to build other sample filters and applications that use them.
  97.  
  98. Don't forget to build both Debug and Release versions of the BaseClasses
  99. project if you intend to build both Debug and Release versions of the samples.
  100.  
  101.  
  102. Building UNICODE
  103. ----------------
  104.  
  105. By default, the DirectShow samples build ANSI versions.  If you want to build 
  106. UNICODE versions of the samples, then you must add defines for UNICODE and _UNICODE
  107. to your project's compiler preprocessor settings.  For example, the preprocessor 
  108. definitions line for a debug MFC application might look like this:
  109.    
  110.    _DEBUG,_WINDOWS,_AFXDLL,_MBCS,WIN32,UNICODE,_UNICODE
  111.    
  112. If you want to build one of the MFC samples as UNICODE, there are two 
  113. additional steps:
  114.  
  115. 1) Add the appropriate MFC unicode library to the project's linker settings.
  116. If you are building a release version, you might use MFC42u.lib.  If you are
  117. building a debug version, you might use MFC42ud.lib.  Open the project settings
  118. dialog, navigate to the Link tab, choose the "General" category, and add the 
  119. appropriate MFC library to the "Object/library modules" field.
  120.  
  121. 2) Set the entry point to wWinMainCRTStartup in the project's linker settings.
  122. Navigate to the Link tab, choose the "Output" category, and add wWinMainCRTStartup
  123. to the "Entry-point symbol" field.  The following information from MSDN provides
  124. more detail:
  125.  
  126.     Note   MFC Unicode applications use wWinMain as the entry point. 
  127.     In this case, CWinApp::m_lpCmdLine is a Unicode string. Be sure to set 
  128.     wWinMainCRTStartup as the Entry Point symbol in the Output category of 
  129.     the Link tab in the Project Settings dialog box.
  130.  
  131.  
  132. Building Windows Media-related samples
  133. --------------------------------------
  134.  
  135. Building the Windows Media-enabled samples (ASFCopy, JukeboxASF, PlayWndASF)
  136. additionally requires the Microsoft Windows Media Format SDK and a valid 
  137. software certificate.  The SDK download page is located at
  138. http://msdn.microsoft.com/workshop/imedia/windowsmedia/sdk/wmsdk.asp, with
  139. links to the SDK itself and information for obtaining a certificate.  Once 
  140. installed, the project link settings for these samples (or alternatively,
  141. the Visual C++ Tools->Options->Directories library path) must be updated 
  142. to add the path for WMStub.lib and WMVCore.lib, which are provided with 
  143. the Windows Media Format SDK.
  144.  
  145. Because of the dependency on the Windows Media Format SDK, the project files
  146. for ASFCopy, JukeboxASF, and PlayWndASF are omitted from the main
  147. DirectShow Visual C++ workspace file (dshow.dsw) to prevent build errors.
  148.  
  149.  
  150. Building for Windows XP
  151. -----------------------
  152. If you want to target Windows XP specifically to use its new features, 
  153. you must set WINVER=0x501 in the sample project file.  You must also 
  154. install the Windows XP Platform SDK, however, to ensure that you have the 
  155. latest header files.  For example, wxutil.cpp in the BaseClasses directory
  156. uses the new TIME_KILL_SYNCHRONOUS flag only if (WINVER >= 0x501).  This flag 
  157. is conditionally defined in the Windows XP Platform SDK in mmsystem.h, 
  158. but only if WINVER is also set to 0x501 when compiling.  To prevent build 
  159. issues, upgrade to the latest version of the Platform SDK.
  160.  
  161.  
  162.  
  163. =============================================================================
  164. What's New in DirectShow for DirectX 8.1
  165. =============================================================================
  166. September, 2001
  167. =============================================================================
  168.  
  169. There have been considerable improvements made to the DirectShow content
  170. for the DirectX 8.1 SDK.  Below is a brief summary of the updates.
  171.  
  172.  
  173. Improvements to existing samples
  174. --------------------------------
  175. There have been many enhancements and refinements to the existing
  176. DirectX 8.0 samples for this release, including:
  177.  
  178. - New features and functionality
  179. - Numerous bug fixes, including Windows XP support issues
  180. - UNICODE and IA64 support
  181. - ASF-enabled versions of the PlayWnd and Jukebox samples
  182. - Clean compilation with Warning Level 4
  183. - Improved video window repainting for Jukebox-style applications
  184. - Updated resource files and version information blocks
  185. - Digital Video sample (Capture\DVApp) was rewritten to take 
  186.   advantage of the ICaptureGraphBuilder2 interface to build its graphs.
  187.  
  188.  
  189. New DirectShow samples
  190. ----------------------
  191. - Audio Capture         (Capture\AudioCap)
  192. - DMO-enabled Player    (Players\PlayDMO)
  193. - DMO Enumerator        (Misc\DMOEnum)
  194. - Filter Mapper         (Misc\Mapper)
  195. - Grabber Sample Filter (Filters\Grabber) (modified from DX8 SampleGrabber)
  196. - JukeboxASF            (Players\JukeboxASF)
  197. - PlayCap with Moniker  (Capture\PlayCapMoniker)
  198. - PlayWndASF            (Players\PlayWndASF)
  199. - Still Image Viewer    (Players\StillView)
  200. - Utility source code and routines in the DirectShow\Common directory
  201.  
  202.  
  203. New DirectShow samples for Windows XP
  204. -------------------------------------
  205. Windows XP provides new functionality that is not present in downlevel
  206. operating systems (Windows 9x, Windows 2000).  The DirectShow_WinXP
  207. directory provides samples to demonstrate using the new Video Mixing
  208. Renderer and the new Microsoft Video Control (for use with the Windows
  209. Driver Model and Broadcast Driver Architecture).
  210.  
  211. The new samples include:
  212.  
  213. - Video Control - C++, Visual Basic, and HTML samples of rendering
  214.   ATSC, DVB, and Analog television in a Windows application.  The
  215.   new Video Control encapsulates much of the new functionality and
  216.   aids developers in creating television-enabled applications.
  217.  
  218. - Video Mixing Renderer (VMR)
  219.   - Cube
  220.   - Renderless
  221.   - Text Player
  222.   - VMR Mix
  223.   - VMR Player
  224.   - VMR Exclusive Mode (VMRXcl)
  225.  
  226. See the DirectShow_WinXP directory for more detailed information 
  227. about these new samples.
  228.  
  229.  
  230. Updated Documentation
  231. ---------------------
  232. The DirectShow documentation has been significantly enhanced for 
  233. DirectX 8.1.  It adds information for the new features available in
  234. Windows XP and expands on previously presented material for the
  235. Microsoft TV Technologies.
  236.  
  237.  
  238. Modified SampleGrabber filter source code
  239. -----------------------------------------
  240. There have been several requests for Microsoft to publish the source
  241. code for the popular SampleGrabber filter.  To that end, we now provide
  242. a modified (simpler) version of the sample grabber filter, which uses 
  243. a new GUID and new CLSID to prevent collisions with the original 
  244. DirectX 8.0 filter.  You can review and modify the source code for this 
  245. filter and use it in your own applications.  See the Filters\Grabber 
  246. directory for more information.
  247.  
  248.  
  249. Windows XP support in header files
  250. ----------------------------------
  251. DirectX 8.1 provides support for the following Windows platforms:
  252.     - Windows 98, Windows 98 Second Edition, Windows Millennium Edition
  253.     - Windows 2000
  254.     - Windows XP
  255.  
  256. Because Windows XP adds new functionality which is not present on 
  257. downlevel systems, many of the headers in the \DXSDK\include directory 
  258. have been revised to allow developers to use new Windows XP functionality 
  259. when desired, with full downlevel compatibility.  This is achieved by 
  260. adding the following conditionally compiled sections to the relevant 
  261. header files:
  262.  
  263.     #if (WINVER >= 0x501)
  264.         // Windows XP content
  265.     #else
  266.         // Downlevel content
  267.     #endif
  268.  
  269. To enable Windows XP features and to utilize the new portions of the
  270. affected headers, set the Windows version to 0x501 (the Windows XP
  271. version) in your Visual C++ project files.  If the Windows version is 
  272. less than 0x501, the original DirectX 8.0 content will be used to allow
  273. full backward compatibility with the DirectX 8.0 SDK.  Similar
  274. improvements were also made to the Interface Definition Files (IDLs)
  275. in the \DXSDK\include\DShowIDL directory.
  276.  
  277. See the Samples\DirectShow and Samples\DirectShow_WinXP directories
  278. for more information.
  279.  
  280.  
  281. Runtime improvements
  282. --------------------
  283. The DirectX 8.1 binaries and redist files have received various bug fixes
  284. since the DirectX 8.0 release, including a large subset of the modifications
  285. that were made for Windows XP.
  286.  
  287.  
  288. Revised GraphEdit application
  289. -----------------------------
  290. The GraphEdit utility benefits from several improvements, particularly 
  291. with respect to its user interface, menus, and toolbar.  Additionally,
  292.  
  293. - Graph resizing code (View->xxx %) handles all sizes correctly, and 
  294.   you can resize your graphs using the menu, keyboard +/- keys, and 
  295.   Ctrl+MouseWheel.  
  296.  
  297. - You can optionally disable the seek bar (and its timed updates), which 
  298.   has been known to cause difficulty when debugging filters with GraphEdit.  
  299.  
  300. - To preserve screen real estate, source and file writer filters displayed 
  301.   in GraphEdit will now only display their corresponding filenames as the 
  302.   filter name, instead of displaying the fully qualified path name.  
  303.   For example, a file source for the file 
  304.   "C:\DXSDK\samples\Multimedia\Media\lake.mpg" would display "lake.mpg".
  305.  
  306.